make_page_writable(old_pgd);
__flush_tlb_all();
free_bootmem(__pa(old_pgd), PAGE_SIZE);
+ init_mm.context.pinned = 1;
kernel_physical_mapping_init(pgd_base);
remap_numa_kva();
#include <asm/tlb.h>
#include <asm/tlbflush.h>
#include <asm/io.h>
+#include <asm/mmu_context.h>
#include <asm-xen/foreign_page.h>
void _arch_exit_mmap(struct mm_struct *mm)
{
- unsigned int cpu = smp_processor_id();
struct task_struct *tsk = current;
task_lock(tsk);
tsk->active_mm = &init_mm;
atomic_inc(&init_mm.mm_count);
- cpu_set(cpu, init_mm.cpu_vm_mask);
- load_cr3(swapper_pg_dir);
- cpu_clear(cpu, mm->cpu_vm_mask);
+ switch_mm(mm, &init_mm, tsk);
atomic_dec(&mm->mm_count);
BUG_ON(atomic_read(&mm->mm_count) == 0);